import json

from langchain_core.output_parsers import JsonOutputParser
from loguru import logger

# JsonOutputParser 只能解析“看起来像 JSON 的字符串”，而你传进去的是一个已经 dict 化的对象
# 1.传递纯字符串给 parser
parser = JsonOutputParser()
model_output_1 = '{"content": "LangChain"}'
logger.info(f"---->原始输出:\n{repr(model_output_1)}----解析后结果：{parser.invoke(model_output_1)}")

# 2. 模拟 LLM 返回的“字符串”——这才是 parser 预期的输入
model_output_2: str = json.dumps({"content": "LangChain"})  # <-- 改成字符串
logger.info(f"---->原始输出:\n{repr(model_output_2)}----解析后结果：{parser.invoke(model_output_2)}")

# 3. 传递非json格式的数据-执行报错
model_output_3 = "  Hello LangChain!  "
logger.info(f"---->原始输出:\n{repr(model_output_3)}----解析后结果：{parser.invoke(model_output_3)}")
